package com.lframework.starter.web.inner.service.system;

import com.lframework.starter.web.core.components.resp.PageResult;
import com.lframework.starter.web.core.service.BaseMpService;
import com.lframework.starter.web.inner.entity.SysDeptLogo;
import com.lframework.starter.web.inner.vo.system.dept.logo.CreateSysDeptLogoVo;
import com.lframework.starter.web.inner.vo.system.dept.logo.QuerySysDeptLogoVo;
import com.lframework.starter.web.inner.vo.system.dept.logo.UpdateSysDeptLogoVo;

import java.util.List;
import java.util.Set;

public interface SysDeptLogoService extends BaseMpService<SysDeptLogo> {

    /**
     * 查询列表
     */
    PageResult<SysDeptLogo> query(Integer pageIndex, Integer pageSize, QuerySysDeptLogoVo vo);

    /**
     * 根据ID查询
     */
    SysDeptLogo findById(String id);

    /**
     * 根据部门ID查询
     */
    List<SysDeptLogo> findByDeptId(String deptId);

    /**
     * 创建
     */
    String create(CreateSysDeptLogoVo vo);

    /**
     * 修改
     */
    void update(UpdateSysDeptLogoVo vo);

    /**
     * 根据ID删除
     */
    void deleteById(String id);

    /**
     * 根据部门ID删除
     */
    void deleteByDeptId(String deptId);

    /**
     * 递归查询用户所在部门的Logo地址
     * 优先查询用户直接所属部门的Logo，如果没有则向上递归查询父级部门的Logo
     *
     * @param userId 用户ID
     * @return Logo地址列表，如果没有找到则返回空列表
     */
    Set<String> findUserDeptLogos(String userId);
}